package com.tanhua.commons.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.apache.commons.lang3.StringUtils;

import java.util.Date;
import java.util.HashMap;
import java.util.Map;

public class JwtUtils {

    // TOKEN的有效期1小时（S）
    private static final long TOKEN_TIME_OUT = 24 * 30 * 3600; //2592000000
    // 加密KEY
    private static final String TOKEN_SECRET = "itcast";

    public static String createToken(Map<String, Object> claims) {
        long currentTime = System.currentTimeMillis();
        return Jwts.builder()
                .setClaims(claims) //设置响应数据体  载荷 PayLoad
                .signWith(SignatureAlgorithm.HS256, TOKEN_SECRET) //设置加密方法和加密盐
                .setExpiration(new Date(currentTime + TOKEN_TIME_OUT * 1000)) //过期时间戳
                .compact();
    }
    /**
     * 获取Token中的claims信息 fgasfagsdasdf.rrgddf.sdgsd
     */
    public static Claims getClaims(String token) {
        return Jwts.parser()
                .setSigningKey(TOKEN_SECRET)
                .parseClaimsJws(token).getBody();
    }
    /**
     * 是否有效 true-有效，false-失效
     */
    public static boolean verifyToken(String token) {
        if(StringUtils.isEmpty(token)) {
            return false;
        }
        try {
            getClaims(token);
        }catch (Exception e) {
            return false;
        }
        return true;
    }

    public static void main(String[] args) {

        String token="sgdfghdfgsdfsd.adgadfasfssfafs.asffasfsaasffas";
        System.out.println(token);
        try {
            getClaims(token);
        }catch (Exception e) {
            System.out.println("错误");
        }

    }
}